From 048ab22f7f67c6c91bcf31544809f88948a9b570 Mon Sep 17 00:00:00 2001 From: Kristian Rietveld Date: Wed, 24 Apr 2002 15:28:51 +0000 Subject: [PATCH] temporarily set ->priv->edited_column to NULL. Pleas read the comment in Wed Apr 24 17:34:16 2002 Kristian Rietveld * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set ->priv->edited_column to NULL. Pleas read the comment in this function for an explanation (fixes #79632). --- ChangeLog | 6 ++++++ ChangeLog.pre-2-10 | 6 ++++++ ChangeLog.pre-2-2 | 6 ++++++ ChangeLog.pre-2-4 | 6 ++++++ ChangeLog.pre-2-6 | 6 ++++++ ChangeLog.pre-2-8 | 6 ++++++ gtk/gtktreeview.c | 22 +++++++++++++++++++--- 7 files changed, 55 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index 8d3d1da015..ef1531d1a5 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Wed Apr 24 17:34:16 2002 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set + ->priv->edited_column to NULL. Pleas read the comment in this + function for an explanation (fixes #79632). + 2002-04-23 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords): diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 8d3d1da015..ef1531d1a5 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,9 @@ +Wed Apr 24 17:34:16 2002 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set + ->priv->edited_column to NULL. Pleas read the comment in this + function for an explanation (fixes #79632). + 2002-04-23 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords): diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 8d3d1da015..ef1531d1a5 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,9 @@ +Wed Apr 24 17:34:16 2002 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set + ->priv->edited_column to NULL. Pleas read the comment in this + function for an explanation (fixes #79632). + 2002-04-23 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords): diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 8d3d1da015..ef1531d1a5 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,9 @@ +Wed Apr 24 17:34:16 2002 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set + ->priv->edited_column to NULL. Pleas read the comment in this + function for an explanation (fixes #79632). + 2002-04-23 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords): diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 8d3d1da015..ef1531d1a5 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,9 @@ +Wed Apr 24 17:34:16 2002 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set + ->priv->edited_column to NULL. Pleas read the comment in this + function for an explanation (fixes #79632). + 2002-04-23 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords): diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 8d3d1da015..ef1531d1a5 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,9 @@ +Wed Apr 24 17:34:16 2002 Kristian Rietveld + + * gtk/gtktreeview.c (gtk_tree_view_stop_editing): temporarily set + ->priv->edited_column to NULL. Pleas read the comment in this + function for an explanation (fixes #79632). + 2002-04-23 Matthias Clasen * gtk/gtktextview.c (gtk_text_view_buffer_to_window_coords): diff --git a/gtk/gtktreeview.c b/gtk/gtktreeview.c index b2ed620110..2ed65411d1 100644 --- a/gtk/gtktreeview.c +++ b/gtk/gtktreeview.c @@ -9984,7 +9984,6 @@ gtk_tree_view_create_row_drag_icon (GtkTreeView *tree_view, &cell_area, &expose_area, 0); - cell_offset += column->width; } @@ -10676,11 +10675,28 @@ static void gtk_tree_view_stop_editing (GtkTreeView *tree_view, gboolean cancel_editing) { + GtkTreeViewColumn *column; + if (tree_view->priv->edited_column == NULL) return; + /** + * This is very evil. We need to do this, because + * gtk_cell_editable_editing_done may trigger gtk_tree_view_row_changed + * later on. If gtk_tree_view_row_changed notices + * tree_view->priv->edited_column != NULL, it'll call + * gtk_tree_view_stop_editing again. Bad things will happen then. + * + * Please read that again if you intend to modify anything here. + */ + + column = tree_view->priv->edited_column; + tree_view->priv->edited_column = NULL; + if (! cancel_editing) - gtk_cell_editable_editing_done (tree_view->priv->edited_column->editable_widget); + gtk_cell_editable_editing_done (column->editable_widget); + + tree_view->priv->edited_column = column; - gtk_cell_editable_remove_widget (tree_view->priv->edited_column->editable_widget); + gtk_cell_editable_remove_widget (column->editable_widget); } -- 2.30.2